<?php
/**
 * Emoji 字符处理
 *
 * Author: hezhizheng
 * Date: 2018/05/16
 * Created by PhpStorm.
 */

namespace App\Services\Utils;

class Emoji
{
    /**
     * 过滤掉emoji
     * @param $str
     * @return null|string|string[]
     */
    public static function filterEmoji($str)
    {
        $str = preg_replace_callback(
            '/./u',
            function (array $match) {
                return strlen($match[0]) >= 4 ? '' : $match[0];
            },
            $str);

        return $str;
    }

    /**
     * 将 emoji 转为 可查询到的 Unicode
     *
     * @param $str
     * @return mixed|string
     */
    public static function EmojiJsonEncodeToUnicode($str)
    {
        if (!self::isEmoji($str)) return $str;

        $str = json_encode($str);
        $str = str_replace('"', '', $str);
        $str = str_replace('\\', '\\\\', $str);

        return $str;
    }



    /**
     * 判断字符是不是Emoji
     *
     * @param $str
     * @return false|int
     */
    public static function isEmoji($str)
    {
        $text = json_encode($str); //暴露出unicode
        return preg_match("/(\\\u[ed][0-9a-f]{3})/i", $text);
    }
}